AWS Signature V4
SigV4
https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html
https://opensearch.org/blog/aws-sigv4-support-for-clients/
https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html
GPT-4.icon
AWS Signature Version 4は、AWS APIリクエストの認証と整合性確認のための仕組みです。簡単に言うと、
AWSにリクエストを送る際、「これは正当なユーザーからの改ざんされていないリクエストですよ」と証明するための署名方式
🔒 目的
AWSは、全てのAPIリクエストに対して「誰が、何を、いつ、どんな内容で」リクエストしたかを確認したい。そのために、リクエストに「署名(Signature)」を付ける必要があります。
🧾 署名付きリクエストのイメージ
以下のようなHTTPリクエストに対し、特定の形式に沿って署名を生成します:
code:_
GET /?Action=ListUsers&Version=2010-05-08
Host: iam.amazonaws.com
X-Amz-Date: 20250619T123000Z
Authorization: AWS4-HMAC-SHA256 Credential=AKIA.../20250619/us-east-1/iam/aws4_request, SignedHeaders=..., Signature=...
このAuthorizationヘッダの中に、あなたの署名が含まれていて、AWSはそれを検証して「これは本当にこのユーザーが送ったリクエストだ」と確認します。
🛠️ Signature Version 4 のステップ(ざっくり)
1. Canonical Request を作成
リクエストメソッド、URI、クエリ、ヘッダー、ボディを正規化して並べる。
2. String to Sign を作成
日付、リージョン、サービス名などとCanonical Requestを元にハッシュ化。
3. 署名鍵を生成
秘密鍵を元にHMAC-SHA256で署名鍵を生成(リージョンやサービスごと)。
4. 署名を作成
上記の鍵と文字列で署名を作成。
5. リクエストに署名を付けて送信